ネットワーク性能が20GbpsのEC2 m4.16xlargeが使用可能になりました
ウィスキー、シガー、パイプをこよなく愛する大栗です。
先程20Gbpsのネットワーク性能を発揮するm4.16xlargeが使用可能になったのでレポートします。
Expanding the M4 Instance Type – New M4.16xlarge
m4.16xlarge
m4.16xlargeは昨年発表されたM4ファミリーのEC2の上位タイプとなります。今まではm4.10xlargeまででしたので全体的スペックが160%となっています。ネットワークやEBS性能はm4.10xlargeの2倍になっています。
タイプ | 仮想CPU | メモリ (GB) | ストレージ | ネットワーク | EBS最適化 | 備考 | ||
スループット (Mbps) | 最大IOPS (16KB) | 最大帯域幅 (MB/s) | ||||||
m4.large | 2 | 8 | EBSのみ | 中 | 450 | 3,600 | 56.25 | 既存 |
m4.xlarge | 4 | 16 | EBSのみ | 高 | 750 | 6,000 | 93.75 | 既存 |
m4.2xlarge | 8 | 32 | EBSのみ | 高 | 1,000 | 8,000 | 125 | 既存 |
m4.4xlarge | 16 | 64 | EBSのみ | 高 | 2,000 | 16,000 | 250 | 既存 |
m4.10xlarge | 40 | 160 | EBSのみ | 10 Gbps | 4,000 | 32,000 | 500 | 既存 |
m4.16xlarge | 64 | 256 | EBSのみ | 20 Gbps | 10,000 | 64,000 | 1,250 | New! |
大きなポイントは、CPUがIntel(R) Xeon(R) CPU E5-2686 v4、Elastic Network Adapter(ENA)に対応、という2点です。
m4.16xlargeを起動する
以下の環境でm4.16xlargeを起動しました。
- リージョン:東京リージョン
- AMI:Amazon Linux AMI 2016.09.0(ami-1a15c77b) Amazon Linux AMI 2016.09は本日リリース!
- EBS:1,000GB (gp2)
- プレイスメントグループ:あり
CPU情報
まずはCPU情報を確認します。CPUのモデル名はIntel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
となっています。
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 79 model name : Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz stepping : 1 microcode : 0xb000014 cpu MHz : 1853.835 cache size : 46080 KB physical id : 0 siblings : 32 core id : 0 cpu cores : 16 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq monitor est ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt bugs : bogomips : 4600.06 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: ・ ・ ・
メモリ情報
次にメモリ情報を確認します。認識しているメモリのサイズは264146432 kB
となっています。
$ cat /proc/meminfo MemTotal: 264146432 kB MemFree: 263367748 kB MemAvailable: 263339388 kB Buffers: 11244 kB Cached: 121256 kB SwapCached: 0 kB Active: 127724 kB Inactive: 19084 kB Active(anon): 14336 kB Inactive(anon): 56 kB Active(file): 113388 kB Inactive(file): 19028 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 14404 kB Mapped: 11712 kB Shmem: 64 kB Slab: 104528 kB SReclaimable: 36120 kB SUnreclaim: 68408 kB KernelStack: 8464 kB PageTables: 2204 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 132073216 kB Committed_AS: 111904 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 12288 kB DirectMap2M: 2084864 kB DirectMap1G: 267386880 kB
ネットワーク
以下のドキュメントを元にENAの対応状況を確認します。
VPC 内の Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化
カーネルモジュール (ena)
Amazon Linuxを使用しているため標準で導入されています。
$ modinfo ena filename: /lib/modules/4.4.19-29.55.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.ko version: 1.0.2 license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: EB49676051BBF026315D272 alias: pci:v00001D0Fd0000EC21sv*sd*bc*sc*i* alias: pci:v00001D0Fd0000EC20sv*sd*bc*sc*i* alias: pci:v00001D0Fd00001EC2sv*sd*bc*sc*i* alias: pci:v00001D0Fd00000EC2sv*sd*bc*sc*i* depends: intree: Y vermagic: 4.4.19-29.55.amzn1.x86_64 SMP mod_unload modversions parm: debug:Debug level (0=none,...,16=all) (int) parm: push_mode:Descriptor / header push mode (0=automatic,1=disable,3=enable) 0 - Automatically choose according to device capability (default) 1 - Don't push anything to device memory 3 - Push descriptors and header buffer to device memory (int) parm: enable_wd:Enable keepalive watchdog (0=disable,1=enable,default=1) (int) parm: enable_missing_tx_detection:Enable missing Tx completions. (default=1) (int) parm: numa_node_override_array:Numa node override map (array of int) parm: numa_node_override:Enable/Disable numa node override (0=disable) (int)
Amazon Linux以外のLinuxディストリビューションの場合は、以下の内容に基いてenaモジュールを導入してください。
Windows Serverの場合は、OS設定は特にありません。
インスタンス属性 (enaSupport)
インスタンスで拡張ネットワーキングenaSupport
属性の状態を確認します。
m4.16xlargeであるため有効になっています。
$ aws ec2 describe-instances --instance-id i-12345678901234567 --query Reservations[].Instances[].EnaSupport --region ap-northeast-1 [ true ]
イメージ属性 (enaSupport)
イメージ属性を確認します。
ところがAuthFailure
が出力されてしまいます。ドキュメントによると、自分のアカウントに属していないイメージの場合はAuthFailure
が出力する場合があるようです。今回はパブリックイメージを使用しているため権限がなかったようです。Amazon LinuxであるためenaSupport
が設定されていると判断して先に進めます。
$ aws ec2 describe-image-attribute --image-id ami-1a15c77b --attribute enaSupport --region ap-northeast-1 An error occurred (AuthFailure) when calling the DescribeImageAttribute operation: Not authorized for image:ami-1a15c77b
ネットワークインターフェイスドライバ
インターフェイスの状態を確認します。以下のようにドライバはena
となっています。
$ ethtool -i eth0 driver: ena version: 1.0.2 firmware-version: bus-info: 0000:00:03.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no
ネットワークパフォーマンスを確認する
ENAのパフォーマンスを計測してみます。計測にはiPerfを使用します。使用方法の詳細はこちらのブログエントリを参照ください。
以下の環境で計測を行いました。
- MTU:9001 (ドキュメントの内容より)
- 対抗インスタンス:m4.16xlarge (m4.16xlargeのENAのパフォーマンスを計測するため)
- プレイスメントグループ:あり
以下のコマンドを実行し、10回試行しました。
サーバ側
サーバ側は普通にTCPで待ち受けます。
$ iperf -s
クライアント側
クライアント側は1並列と5並列で実行します。
$ iperf -c 192.0.2.1
$ iperf -c 192.0.2.1 -P 5
結果
1並列の計測結果は以下になります。
平均で9.40Gbpsの帯域幅となっています。
インターバル | 転送量 | 帯域幅 |
---|---|---|
0.0-10.0 sec | 10.9 GBytes | 9.34 Gbits/sec |
0.0-10.0 sec | 10.7 GBytes | 9.23 Gbits/sec |
0.0-10.0 sec | 11.0 GBytes | 9.44 Gbits/sec |
0.0-10.0 sec | 11.1 GBytes | 9.52 Gbits/sec |
0.0-10.0 sec | 10.8 GBytes | 9.30 Gbits/sec |
0.0-10.0 sec | 11.0 GBytes | 9.44 Gbits/sec |
0.0-10.0 sec | 10.8 GBytes | 9.24 Gbits/sec |
0.0-10.0 sec | 10.9 GBytes | 9.33 Gbits/sec |
0.0-10.0 sec | 11.2 GBytes | 9.58 Gbits/sec |
0.0-10.0 sec | 11.1 GBytes | 9.57 Gbits/sec |
5並列の計測結果は以下になります。
全て20.6Gbpsとなっています。ENAの限界まで速度を出せています。
インターバル | 転送量 | 帯域幅 |
---|---|---|
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
0.0-10.0 sec | 24.0 GBytes | 20.6 Gbits/sec |
さいごに
今までENAはx1.32xlargeのみで使用可能でした。x1.32xlargeは費用が高いため高スループットなネットワーク環境が必要な場合でも利用には二の足を踏んでいたと思います。しかしm4.16xlargeが出たため3割以下の価格で20Gbpsのインスタンスを利用できるようになりました。CPUもBroadwellアーキテクチャのXeon E5-2686 v4となっており高いパフォーマンスが期待できます。 HPC環境などでは丁度よいインスタンスではないでしょうか。